package ms.platform.system.service;

import java.util.List;
import java.util.Map;

import ms.platform.system.dao.AdminDAO;
import ms.platform.system.dao.RoleDAO;
import ms.platform.system.dto.UserMailDto;
import ms.platform.system.model.Admin;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional(propagation=Propagation.SUPPORTS)
public class AdminService {

	@Autowired
	private AdminDAO adminDAO;
	
	@Autowired
	private RoleDAO roleDAO;

	/**
	 * 根据用户id查询用户
	 * @param id
	 * @return
	 */
	public Admin queryAdminById(Integer id) {
		return adminDAO.queryAdminById(id);
	}
	
	/**
	 * 根据用户名查询用户
	 * @param username
	 * @return
	 */
	public Admin queryAdminByUsername(String username){
		return adminDAO.queryAdminByUsername(username);
	}
	
	/**
	 * 查询用户手机号是否与数据库中重复
	 * @param username
	 * @return
	 */
	public int validateByPhone(String phone){
		return adminDAO.validateByPhone(phone);
	}

	
	/**
	 * @Title: queryCountByUsername
	 * @Description: TODO(通过用户名查询用户名是否已经存在)
	 * @param @param username
	 * @param @return    设定文件
	 * @return int    返回类型
	 * @throws
	 */
	public int queryCountByUsername(String username){
		return adminDAO.queryCountByUsername(username);
	}
	
	/**
	 * 修改用户
	 * @param admin
	 */
	public void update(Admin admin) {
		adminDAO.update(admin);
	}
	/**
	 * 修改用户状态
	 * */
	public void updateIsUsed(Admin admin){
		adminDAO.updateIsUsed(admin);
	}
	/**
	 * 新增用户
	 * @param admin
	 */
	public void insert(Admin admin) {
		adminDAO.insert(admin);
	}

	
	/**
	 * 根据用户id删除该用户
	 * @param id
	 */
	public void deleteUserById(Integer id, String updateBy){
		Admin admin = adminDAO.queryAdminById(id);
		admin.setUpdateBy(updateBy);
		admin.setIsDeleted("1");
		adminDAO.update(admin);
	}
	
	/**
	 * 根据用户id删除该用户的角色
	 * @param adminId
	 */
	public void deleteAdminRoleById(Integer adminId){
		roleDAO.deleteAdminRoleById(adminId);
	}

	/**
	 * 带条件分页查询list
	 * @param map
	 * @return
	 */
	public List<Admin> queryAdminListByCondition(Map<String, Object> map) {
		return adminDAO.queryAdminListByCondition(map);
	}
	
	/**
	 * 分页查询获取总条数
	 * @param map
	 * @return
	 */
	public Integer queryAdminCount(Map<String, Object> map) {
		return adminDAO.queryAdminCount(map);
	}
	
	/**
	 * 查询当前用户是否是超级管理员
	 * @param adminId 当前用户id
	 * @return true：是超级管理员   false：不是超级管理员
	 *//*
	public boolean isAdmin(String adminId){
		boolean isAdmin = false;//用户角色是否是管理员：true是管理员  false不是管理员
		List<Role> roleList1 = roleDAO.getAllRoleByAdminId(Integer.parseInt(adminId));
		//由于一个用户可以有多个角色，所以当他有管理员角色就可以了
		for (Role role : roleList1) {
			if("1".equals(role.getType())){
				isAdmin = true;
				break;
			}
		}
		Admin admin = adminDAO.queryAdminById(Integer.parseInt(adminId));//当前登录用户
		//如果用户角色是管理员但不是超级管理员公司的则只查询他自己创建的用户
		if (isAdmin && admin.getCompanyCode().equals(Python.SUPER_COMPANY_CODE)) {
			return true;
		}else{
			return false;
		}
	}*/
	
	public List<Admin> getAllUaer() {
		return adminDAO.getAllUaer();
	}

	/**
	 * 查询所有厂商账号
	 */
	public List<Admin> getAdminList() {
		return adminDAO.getAdminList();
	}
	
	public List<UserMailDto> getUserMailDto(){
		return adminDAO.getUserMailDto();
	}
}
